﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using RegistroMascotas.Modelo;
using Data;

namespace Service
{
    public class GestorDeDenuncias
    {
        public static bool crearDenuncia(Denuncia d,long dniMatricula) {
            bool exito = false;
            int id = 0;

            try
            {
                id = PersonaDAO.obtenerDenunciado(d.Persona);

                if (id != 0)
                {
                    d.Persona.IdPersona = id;
                }

                exito = PersonaDAO.crearDenuncia(d,dniMatricula);

                if (!exito)
                    throw new Exception("No se pudo realizar la denuncia.");
            }
            catch (Exception ex)
            {                
                throw ex;
            }

            return exito;
        }

        public static bool aprobarDenuncia(int idDenuncia) {
            bool exito = false;
            bool cambio = false;
            int idDenunciado = 0;

            try
            {
                idDenunciado = PersonaDAO.obtenerPersonaDeDenuncia(idDenuncia);
                exito = PersonaDAO.cambiarEstadoDenuncia(idDenuncia, EstadoDenuncia.Aprobado.ToString(),"");

                if (exito)
                {
                    cambio = PersonaDAO.sumarCantDenuncias(idDenunciado);

                    if (!cambio)
                        throw new Exception("No se pudo denunciar al usuario.");
                }
            }
            catch (Exception ex)
            {                
                throw ex;
            }
            return exito;
        }

        public static bool rechazarDenuncia(int idDenuncia,string motivoRechazo)
        {
            bool exito = false;
            bool cambio = false;

            try
            {
                exito = PersonaDAO.cambiarEstadoDenuncia(idDenuncia, EstadoDenuncia.Rechazado.ToString(),motivoRechazo);

                if (exito)
                {
                    cambio = PersonaDAO.quitarPersonaDenuncia(idDenuncia);

                    if(!cambio)
                        throw new Exception("No se pudo completar el rechazo de denuncia.");
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return exito;
        }
    }
}
